package com.Ivy.thread.object;
//生产者和消费者通过仓库进行交互
public class Warehouse {
    //声明属性：产品，初始值设置为0，即仓库里原本没有产品
    private int productNum=0;
    private boolean full=false;
    //方法：生产者生产产品
    public synchronized void doProduce() throws InterruptedException {
        if (full){
            this.wait(); //仓库满了，等待生产
        }else {
            //仓库空了，生产者开始生产产品
            System.out.println(Thread.currentThread().getName()+"生产者正在生产产品......");
            Thread.sleep(2000);
            productNum++;
            full=true;
            System.out.println("仓库满了,请消费！");
            this.notifyAll();

        }

    }
    //方法：消费者购买产品
    public synchronized void doPurchase() throws InterruptedException {
        if (!full){
            this.wait();
        }else {
            System.out.println(Thread.currentThread().getName()+"消费者正在购买产品......");
            Thread.sleep(2000);
            productNum--;
            full=false;
            System.out.println("产品库存为:"+productNum+"，生产者请尽快生产！");
            this.notifyAll();
        }
    }

}
